package com.yidu.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.comment.Page;
import com.yidu.model.SnAudit;
import com.yidu.model.SnUser;
import com.yidu.service.SnAuditService;

/**
 * 审核action
 * 
 * @author chensituo
 * @date 2018年11月29日 上午2:01:58
 */
@Controller
@RequestMapping("/audit")
public class SnAuditAction {
	/**
	 * 注入审核service
	 */
	@Resource
	SnAuditService auditService;

	/**
	 * 增加生产计划审核
	 * 
	 * @param proId 生产id
	 * @return 0 增加失败 1 增加成功
	 */
	@RequestMapping("addProduction")
	@ResponseBody
	public int addProduction(String proId) {
		// 调用增加生产计划审核的方法
		return auditService.addProduction(proId);
	}

	/**
	 * 增加分公司审核
	 * 
	 * @param braId 分公司id
	 * @return 0 增加失败 1 增加成功
	 */
	@RequestMapping("addBranch")
	@ResponseBody
	public int addBranch(String braId) {
		// 调用增加生产计划审核的方法
		return auditService.addBranch(braId);
	}

	/**
	 * 查看生产财务审核所有
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核表model
	 * @return json 格式
	 */
	@RequestMapping("/findProAll")
	@ResponseBody
	public Map<String, Object> findProAll(String page, String limit, SnAudit audit) {
		System.err.println("-----------------------" + audit.getAuState());
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<SnAudit> list = auditService.findProAll(maps);
		// 调用查询行数的方法
		int count = auditService.findProCount(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 查看生产财务审核所有
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核表model
	 * @return json 格式
	 */
	@RequestMapping("/findProAllSum")
	@ResponseBody
	public Map<String, Object> findProAllSum(String page, String limit, SnAudit audit) {
		System.err.println("-----------------------" + audit.getStartTime());
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<SnAudit> list = auditService.findProAllSum(maps);
		// 调用查询行数的方法
		int count = auditService.findProCountSum(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 查看生产审核详情
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核表model
	 * @return json 格式
	 */
	@RequestMapping("/ProQuery")
	@ResponseBody
	public Map<String, Object> ProQuery(String page, String limit, SnAudit audit) {
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<SnAudit> list = auditService.ProQuery(maps);
		// 调用查询行数的方法
		int count = auditService.ProQueryCount(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 生产审核
	 * 
	 * @param audit 审核model
	 * @return 0 失败 1 成功
	 */
	@RequestMapping("/addProAudit")
	@ResponseBody
	public int addProAudit(SnAudit audit, HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		return auditService.addProAudit(audit, user);
	}

	/**
	 * 采购材料审核
	 * 
	 * @param audit 审核model
	 * @return 0 失败 1 成功
	 */
	@RequestMapping("/addMaAudit")
	@ResponseBody
	public int addMaAudit(SnAudit audit, HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		return auditService.addMaAudit(audit, user);
	}

	/**
	 * 材料采购财务查询所有审核
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核model
	 * @return json 格式
	 */
	@RequestMapping("/chaseAuditAll")
	@ResponseBody
	public Map<String, Object> chaseAuditAll(String page, String limit, SnAudit audit) {
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<Map<String, Object>> list = auditService.chaseAuditAll(maps);
		// 调用查询行数的方法
		int count = auditService.chaseAuditCount(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 材料采购财务查询所有审核
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核model
	 * @return json 格式
	 */
	@RequestMapping("/chaseAuditSumAll")
	@ResponseBody
	public Map<String, Object> chaseAuditSumAll(String page, String limit, SnAudit audit) {
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<Map<String, Object>> list = auditService.chaseAuditSumAll(maps);
		// 调用查询行数的方法
		int count = auditService.chaseAuditCountSum(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 零售退货财务审核
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核model
	 * @return json 格式
	 */
	@RequestMapping("/findRetailAll")
	@ResponseBody
	public Map<String, Object> findRetailAll(String page, String limit, SnAudit audit) {
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<Map<String, Object>> list = auditService.retailAuditAll(maps);
		// 调用查询行数的方法
		int count = auditService.retailAuditCount(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 零售总经理财务审核
	 * 
	 * @param page  当前页数
	 * @param limit 当前行数
	 * @param audit 审核model
	 * @return json 格式
	 */
	@RequestMapping("/findRetailAllSum")
	@ResponseBody
	public Map<String, Object> findRetailAllSum(String page, String limit, SnAudit audit) {
		// 得到分页工具类
		Page pages = new Page();
		// 将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));

		// 创建一个map对象
		Map<String, Object> maps = new HashMap<>();
		maps.put("page", pages);
		maps.put("audit", audit);
		// 调用条件查询的方法
		List<Map<String, Object>> list = auditService.retailAuditAllSum(maps);
		// 调用查询行数的方法
		int count = auditService.retailAuditCountSum(maps);

		// 创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count", count);
		// 将list放入map中
		map.put("data", list);
		return map;
	}

	/**
	 * 零售审核
	 * 
	 * @param audit   零售审核model
	 * @param session 回话
	 * @return 0 失败 1 成功
	 */
	@RequestMapping("addRetailAudit")
	@ResponseBody
	public int addRetailAudit(SnAudit audit, HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		return auditService.addRetailAudit(audit, user);
	}
}
